#include <bits/stdc++.h>
// 2024/08/08
// tag: 排序
using namespace std;

// 定义志愿者结构体
struct volunteer
{
    int id, score;
    volunteer(int i, int s)
    {
        id = i, score = s;
    }
    volunteer(){
        ;
    }
} v[5001];

// 比较函数，用于排序
bool cmp(const volunteer &v1, const volunteer &v2)
{
    return v1.score > v2.score || (v1.score == v2.score && v1.id < v2.id); 
}

signed main()
{
    int n, m;
    cin >> n >> m;
    // 输入志愿者信息
    for (int i = 1; i <= n; i++)
    {
        int x, y;
        cin >> x >> y;
        v[i] = volunteer(x, y);
    }
    // 对志愿者进行排序
    sort(v + 1, v + n + 1, cmp);

    // 计算分数线
    int fractionBar = v[int(m * 1.5)].score, i = int(m * 1.5);
    // 找到分数线上的最后一个志愿者
    for (; i <= n && v[i].score == fractionBar; i++)
        ;

    // 输出分数线和通过人数
    cout << fractionBar << " " << i - 1 << endl;
    // 输出通过的所有志愿者的信息
    for (int j = 1; j < i; j++)
        cout << v[j].id << " " << v[j].score << endl;

    return 0;
}